package com.joker.demo.admin.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.joker.demo.admin.domain.po.EnvironmentMonitorPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 环境监控数据Mapper
 *
 * @author : feixiang.li
 * @since : 2025-01-27 10:30
 */
@Mapper
public interface EnvironmentMonitorMapper extends BaseMapper<EnvironmentMonitorPO> {

    /**
     * 查询24小时内所有执行器的汇总环境监控数据
     *
     * @param startTime 开始时间（24小时前）
     * @return 汇总监控数据列表
     */
    List<EnvironmentMonitorPO> query24HourSummaryData(@Param("startTime") LocalDateTime startTime);

    /**
     * 查询指定执行器24小时内的汇总环境监控数据
     *
     * @param registerKey 执行器标识
     * @param startTime 开始时间（24小时前）
     * @return 汇总监控数据
     */
    EnvironmentMonitorPO query24HourSummaryDataByRegisterKey(@Param("registerKey") String registerKey,
                                                           @Param("startTime") LocalDateTime startTime);

    /**
     * 按小时统计执行器总数
     *
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 执行器总数
     */
    int countExecutorsByHour(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);

    /**
     * 按小时统计在线执行器数量
     *
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 在线执行器数量
     */
    int countOnlineExecutorsByHour(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
}
